﻿#ifndef MAINWINDOW_H
#define MAINWINDOW_H

#include <QMainWindow>
#include <QDateTime>
#include <QTextStream>

namespace Ui {
class MainWindow;
}

class MainWindow : public QMainWindow
{
    Q_OBJECT

public:
    explicit MainWindow(QWidget *parent = nullptr);
    ~MainWindow();

private:
	void setConnectHandles();
	void init();
    void parseData(const QString& _data);
    void parseOneContent(const QString& _content, const QDateTime _dateTime);
    void saveFile(QString _path);
	QString generateFileName();
	void saveOneTypeFile(QTextStream& _stream, const std::pair<QString, std::vector<QString>> _pair);

private:
    Ui::MainWindow *ui;

private:
	const QString LINE_SEPARATOR = "__line__";
	const QString TIME_CONTENT_SEPARATOR = "__time__";
	const QString OTHER_TITLE = u8"其他";

    std::map<QString, std::vector<QString>> mapToSave;

	const std::map<QString, QString> HEAD_MAP = {
		std::pair<QString, QString>("feat", u8"新功能"),
		std::pair<QString, QString>("fix", u8"问题修复"),
		std::pair<QString, QString>("docs", u8"文档"),
		std::pair<QString, QString>("style", u8"格式"),
		std::pair<QString, QString>("refactor", u8"重构"),
		std::pair<QString, QString>("chore", u8"构建过程或辅助工具的变动"),
		std::pair<QString, QString>("revert", u8"撤销，版本回退"),
		std::pair<QString, QString>("perf", u8"性能优化"),
		std::pair<QString, QString>("test", u8"测试"),
		std::pair<QString, QString>("improvement", u8"改进"),
		std::pair<QString, QString>("build", u8"打包"),
		std::pair<QString, QString>("ci", u8"持续集成"),
    };

    QDateTime beginDateTime_;
    QDateTime endDateTime_;
};

#endif // MAINWINDOW_H
